package com.tjetc.tcp.client;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class _2Client {
    public static void main(String[] args) {
        // 本机地址为127.0.0.1
        // 192.168.60.100
        try (
                // 第一个参数是服务器地址
                // 第二个参数是服务器的端口号
                Socket socket = new Socket("192.168.60.100", 9999);
                // 对于客户端 拿输出流
                OutputStream outputStream = socket.getOutputStream();
                // 获取输入流 用来接收服务器给我的响应
                InputStream inputStream = socket.getInputStream();
        ) {
            outputStream.write("hello, server".getBytes());
            // 表示我已经写完了 停止输出
            // 调用此方法后，会将当前socket的输出流关闭就无法再次使用输出流了，
            //  如果不掉用 阻塞是服务器的read方法 所以导致服务器没有执行到write方法 就不会写
            // 因为TCP的协议 所以输入输出流需要各自关闭，互不影响
            socket.shutdownOutput();

            // 拿到服务器的响应
            byte[] bytes = new byte[1024];
            int len = 0;
            while ((len = inputStream.read(bytes)) != -1) {
                System.out.println(new String(bytes, 0, len));
            }
            System.out.println("客户端退出");
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
